Objectives
Learn the fundamental concepts and technologies to develop distributed applications that can guarantee non-functional requirements such as re-configurability, security, fault tolerance, and scalability. Students should be able to define a distributed architecture for an application. Program distributed applications using remote procedure calls and distributed name services. Analyse reliability and availability requirements and introduce mechanisms for ensuring fault tolerance in applications. Interpret security requirements, to design policies and use mechanisms to fulfil such requirements.
Program
Introduction: challenges and opportunities of distribution. Message passing: remote procedure calls. Naming. Shared memory: memory consistency and distributed shared memory. Coordination and fault-tolerance: fault types and dependability, state machine replication, primarybackup, two-phase commit. Security: introduction to cryptography, secure channels, digital certificates, TLS, single sign-on.
Evaluation Methodology
Project and Exam The continuous evaluation component will have a weight> = 40%
Cross-Competence Component
The project requires critical, innovative and creative thinking to solve problems. Intra and interpersonal skills are very important for the teamwork. The project's topic is aligned with relevant societal challenges.
Laboratorial Component
Practical work on some of the key technologies discussed in the theoretical lectures followed by definition and development of the final project work
Programming and Computing Component
In the course where this UC is offered the Computing and Programming components are assured according to MEPP 2122.
More information at: https://fenix.tecnico.ulisboa.pt/cursos/lerc/disciplina-curricular/845953938490021